#ifndef INTERFACEVENDOR_H
#define INTERFACEVENDOR_H

#include "pluginMetaData.h"
#include "../CpePluginManager/cpedefine.h"
#include <QString>
#include <QtPlugin>
#include <QObject>

/**
 * @brief The InterfaceVendor class 所有CpeManager厂家插件的接口，包含登录、参数显示、强制功能接口
 */
class InterfaceVendor
{
public:
    virtual ~InterfaceVendor() {}
    virtual void recMsgfromManager(PluginMetaData metadata) = 0;
    virtual void sendMsg2Manager(PluginMetaData metadata) = 0;
    virtual void startPlugin() = 0;

    /**
     * @brief recognize 识别设备，判断厂家一致性
     */
    virtual void recognize() = 0;

    /**
     * @brief logout 退出登录
     */
    virtual void logout() = 0;

    virtual void reboot() = 0;

    virtual void setRat(const QString &strRat) = 0;

    virtual void setBandLock(const std::vector<int> &vecCGW, const std::vector<int> &vecLTE, const std::vector<int> &vecNR, int iType) = 0;

    virtual void unlockBandLock(CpeEmUnlockBandType eType) = 0;

    /**
     * @brief setLTECellLock    执行LTE锁小区 or 锁频点
     * @param strEARFCN         EARFCN  必填
     * @param strPCI            PCI     选填
     */
    virtual void setLTECellLock(const QString &strEARFCN, const QString &strPCI = "") = 0;

    /**
     * @brief setNRCellLock     执行NR锁小区 or 锁频点
     * @param strEARFCN         EARFCN  必填
     * @param strPCI            PCI     选填
     * @param strBand           Band    选填
     * @param strSCS            SCS     选填
     */
    virtual void setNRCellLock(const QString &strEARFCN, const QString &strPCI = "", const QString &strBand = "", const QString &strSCS = "") = 0;

    virtual void unlockLTECellLock() = 0;

    virtual void unlockNRCellLock() = 0;

    virtual void stopCycle() = 0;

    virtual void refreshOnce() = 0;

    virtual void get(const QString &strPlugin, int iInfoID, const QString &strUrl) = 0;

    virtual void post(const QString &strPlugin, int iInfoID, const QString &strUrl, const QString &strPost) = 0;
};

Q_DECLARE_INTERFACE(InterfaceVendor, "com.kk.cpemanager.interfacevendor")

#endif
